#pragma once
#include "RCInterfaces.h"
#include "RC3DGameComponent.h"

using namespace RCDX11;
using namespace DirectX;

namespace RCDX11
{
	class RCCamera : public RC3DGameComponent, public IRCCamera
	{
	protected:

		XMFLOAT3 worldUpVector;

		XMMATRIX view;
		XMMATRIX projection;

		UINT width;
		UINT height;

	public:
		DECLDIR RCCamera(void);
		DECLDIR RCCamera(XMFLOAT3 pos,XMFLOAT3 worldUp,XMVECTOR rot);
		DECLDIR virtual ~RCCamera(void);

		DECLDIR virtual XMMATRIX getProjection();
		DECLDIR virtual XMMATRIX getView();

		DECLDIR virtual void setWorldUp(XMFLOAT3 up);
		DECLDIR virtual void setWidth(UINT newWidth);
		DECLDIR virtual void setHeight(UINT newHeight);

		DECLDIR virtual void Update(float time);
		DECLDIR virtual void Initialize();
	};
}